package prictise.com.application1.designMode.responsibilityChain;

/**
 * @Author zhisiyi
 * @Date 2019.08.23 17:06
 * @Comment
 */
public abstract class AbstractLogger {

  public static final int INFO = 1;    //一级日志
  public static final int DEBUG = 2;   //二级日志包括一级
  public static final int ERROR = 3;   //三级包括前两个

  protected int level;
  //责任链下一个元素
  protected AbstractLogger nextLogger;

  public void setNextLogger(AbstractLogger nextLogger) {
    this.nextLogger = nextLogger;
  }

  //不同级别的记录方法不一样,这里给一个抽象的记录方法
  abstract protected void write(String message);

  //调用责任链处理器的记录方法.并且判断下一个责任链元素是否存在,若存在,则执行下一个方法.
  public void logMessage(int level, String message) {
    if (this.level <= level) {    //根据传进来的日志等级,判断哪些责任链元素要去记录
      write(message);
    }
    if (nextLogger != null) {
      nextLogger.logMessage(level, message);   //进行下一个责任链元素处理
    }
  }
}
